package com.allm.ai.common.service;

import com.allm.ai.common.entity.AiModel;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * AI模型服务接口
 */
public interface AiModelService {

    /**
     * 创建AI模型
     */
    AiModel createAiModel(AiModel aiModel);

    /**
     * 更新AI模型
     */
    AiModel updateAiModel(Long id, AiModel aiModel);

    /**
     * 根据ID查找AI模型
     */
    Optional<AiModel> findById(Long id);

    /**
     * 根据名称查找AI模型
     */
    Optional<AiModel> findByName(String name);

    /**
     * 获取所有AI模型
     */
    List<AiModel> findAll();

    /**
     * 分页查询AI模型
     */
    Page<AiModel> findByConditions(String name, String serviceProvider, 
                                  String modelType, Boolean isActive, 
                                  Boolean isFree, Pageable pageable);

    /**
     * 获取所有启用的模型
     */
    List<AiModel> findActiveModels();

    /**
     * 获取所有免费的模型
     */
    List<AiModel> findFreeModels();

    /**
     * 根据服务提供商获取模型
     */
    List<AiModel> findByServiceProvider(String serviceProvider);

    /**
     * 根据模型类型获取模型
     */
    List<AiModel> findByModelType(String modelType);

    /**
     * 删除AI模型
     */
    void deleteById(Long id);

    /**
     * 启用/禁用模型
     */
    AiModel toggleActive(Long id);

    /**
     * 检查模型名称是否存在
     */
    boolean existsByName(String name);

    List<AiModel> findByIds(List<Long> ids);
} 